
;***************************************************************
;discription： 模型算法IDL计算
;
;author: wangqiang cdut 2023-7-12
;email：  cqwensten@163.com  419436974@qq.com
;***************************************************************
pro pro_model_algorithm
  ;严格编译规则
  COMPILE_OPT IDL2
  ;二次开发模式初始化，恢复envi的sav文件
  ENVI,/RESTORE_BASE_SAVE_FILES
  ;初始化envi，保存日志文件
  ENVI_BATCH_INIT,log_file='pro_vpd.log'
  starttime=systime(1)
  PRINT , '-----the job is started，starttime：' ,starttime, '-----'
  PRINT ,'----------'
  ;********************************开始****************************************

  

  ;********************************退出***********************************
  ;print the end time
  endtime=systime(1)
  duration=endtime-starttime
  PRINT ,'----------'
  PRINT ,'-----the job is finished， endtime ：' ,endtime, '-----'
  ;关闭envi二次开发模式
  ENVI_BATCH_EXIT
end

;*********************************************
;
;计算像元的AVP（AVP是饱和蒸汽压和实际蒸汽压）
;*********************************************
FUNCTION FuncAVPCal_ByCell, Td,Fw
  ;
  h1 = 17.67*Td/(Td+243.5)
  avp = 6.112*Fw*exp(h1)
  return,avp
END

;*********************************************
;
;计算像元的VPD（包括SVP和AVP是饱和蒸汽压和实际蒸汽压）
;*********************************************
FUNCTION FuncVPDCal_ByCell, Ta,Td,Fw
  ;
  h1 = 17.67*Ta/(Ta+243.5)
  h2 = 17.67*Td/(Td+243.5)

  vpd = 6.112*Fw*(exp(h1)-exp(h2))
  return,vpd
END



;*********************************************
;
;计算像元的the air pressure at mean sea level
;*********************************************
FUNCTION FuncFwCal_ByCell, Ta, Z
  Pmsl = 1013.25
  ;
  Pmst = Pmsl*((Ta+273.16)/((Ta+273.16)+0.0065*Z))^5.625
  Fw = 1 + 7.0*(0.0001) + 3.46*(0.000001)*Pmst

  ;
  return,Fw
END
